#ifndef BOUNDING_HH
# define BOUNDING_HH

# include <math/vector.hh>

class Ray;

class Bounding
{
public:
  virtual bool dispatch (const Vector3f& pos, Ray* ray) const = 0;
};

class BoundingSphere: public Bounding
{
public:
  BoundingSphere (int radius);

  virtual bool dispatch (const Vector3f& pos, Ray* ray) const;

  int radius () const;

protected:
  int radius_;
};

class BoundingBox: public Bounding
{
public:
  BoundingBox (const Vector3f& size);

  virtual bool dispatch (const Vector3f& pos, Ray* ray) const;

  const Vector3f& size () const;

protected:
  Vector3f size_;
};

#endif /// !BOUNDING_HH
